package com.fh.util;

import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

/**
 * @Description 邮件发送工具类
 * @date 2014-10-14 下午03:07:15
 * @author Liulz
 */
public class MailUtil {

	/** 发送者账号密码 */
	private String username; // 发件人账号
	private String password; // 发件人密码
	private String nick; // 发件人昵称
	private String port; // 发送端口
	private String smtpService; // smtp服务器地址

	/** 构造 */
	public MailUtil(String username, String password, String nick, String port, String smtpService) {
		this.username = username;
		this.password = password;
		this.nick = nick;
		this.port = port;
		this.smtpService = smtpService;
	}

	/** 发送邮件, 发送成功返回true, 发送失败返回false */
	/**
	 * 
	 * @param toMail收件人
	 * @param title 标题
	 * @param content 内容
	 * @param isDebug 是否启动debug
	 * @param ssl 是否开启ssl验证
	 * @return 
	 */
	public boolean send(String toMail, String title, String content, boolean isDebug,boolean ssl) {
		try {

			/* 创建一个属性对象 */
			Properties props = new Properties();

			/* 指定SMTP服务器 */
			props.put("mail.smtp.host", this.smtpService);

			/* 指定是否需要SMTP验证 */
			props.put("mail.smtp.auth", "true");
			props.put("mail.smtp.port", this.port);
			props.put("mail.transport.protocol", "smtp");
			if(ssl){
				props.put("mail.smtp.ssl.enable", true);
			}
			/* 创建会话 */
			Session session = Session.getInstance(props);
			session.setDebug(isDebug); // 是否为调试模

			/* 创建一个Message对象 */
			Message mess = new MimeMessage(session);
			mess.setFrom(new InternetAddress(this.username, this.nick));// 发件人
			mess.setRecipient(RecipientType.TO, new InternetAddress(toMail)); // 收件人
			mess.setSentDate(new Date()); // 发送时间
			mess.setSubject(title); // 发送标题
			mess.setText(content);// 发送内容
			mess.setHeader("X-Priority", "1"); // 指定邮件的优先级 1：紧急 3:普通 5：缓慢

			/* 创建一个传输对象 */
			Transport trans = session.getTransport("smtp");

			/* 连接SMTP服务器 */
			trans.connect(this.smtpService, this.username, this.password);// 发件人的邮箱用户名和密码
			trans.sendMessage(mess, mess.getAllRecipients()); // 发送
			trans.close(); // 关闭传输

			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
	
	public static void main(String[] args) {
		MailUtil mailUtil=new MailUtil("ruishimail@163.com", "ruishi1", "VLION DMP", "25", "smtp.163.com");
		mailUtil.send("87766867@qq.com", "VLION DMP", "邮件测试115889198", false,false);
	}
}
